import { fileURLToPath, URL } from 'node:url'
import { Plugin as importToCDN } from 'vite-plugin-cdn-import'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { visualizer } from "rollup-plugin-visualizer"; //查看打包后文件分析


// https://vitejs.dev/config/
export default defineConfig(({mode})=>{
  return {
    plugins: [
      vue(),
      visualizer({
        open: true,//注意这里要设置为true，否则无效
      }),
      // importToCDN({
      //   // prodUrl: 'https://unpkg.com/{name}@{path}',
      //   modules: [
      //     // autoComplete('vue'),
      //     // autoComplete('axios'),
      //     // {
      //     //   name: 'vue',
      //     //   var: 'Vue',
      //     //   path: 'https://unpkg.com/vue@3.3.4'
      //     // },
      //     {
      //       name: 'vue',
      //       var: 'Vue',
      //       path: '3.3.4'
      //     },
      //     {
      //       name: 'vue-demi', // vue版本选好 不然会报错
      //       var: 'VueDemi',
      //       path: '0.14.5'
      //     },
      //     // {
      //     //   name: 'vue-router',
      //     //   var: 'VueRouter',
      //     //   path: '4.2.4'
      //     // },
      //     {
      //       name: 'element-plus',
      //       var: 'ElementPlus',
      //       path: '2.4.0',
      //       css: '2.4.0/dist/index.css'
      //     },
      //     {
      //       name: '@element-plus/icons-vue',
      //       var: 'ElementPlusIconsVue', // 根据main.js中定义的来
      //       path: '2.1.0'
      //     },
      //     // {
      //     //   name: 'pinia',
      //     //   var: 'Pinia',
      //     //   path: '2.1.3'
      //     // }
      //   ]
      // })
    ],
    server: {
      host: '0.0.0.0',
      port: 3001,
      https: false,
      cors: true
    },
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
    css: {
      devSourcemap: true,
      // 全局scss变量引用
      preprocessorOptions: {
          scss: {
             
          }
      }
  },
    build: {
      chunkSizeWarningLimit: 4097, // 设置 chunk 的大小阈值
      assetsInlineLimit: 4096, //小于此阈值的导入或引用资源将内联为 base64 编码，以避免额外的 http 请求
      rollupOptions: {
        output: {
          entryFileNames: 'assets/jmx-[hash].js',
          chunkFileNames: 'assets/jmx-[name]-[hash].js',
          assetFileNames: 'assets/jmx-[name]-[hash].[ext]'
        },
        manualChunks (id) {
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/')[1].split('/')[0].toString()
          }
        },
        // manualChunks: {
        //   // 将 element-plus 单独打包成一个 chunk
        //   // 'element-plus': ['element-plus'],
        // },
        // external: ['element-plus','@element-plus/icons-vue']
      },
      minify: 'terser',
      terserOptions: {
        compress: {
            // 生产环境时移除console
            drop_console: mode === 'production',
            drop_debugger: mode === 'production'
        }
    }    
    }
  }
 }
)

